草庐IT

c++ - 混合 C++ 和 Fortran

全部标签

c++ - 混合模式项目的内存泄漏检测 : managed, 非托管和 native

我有一个VisualStudio2010解决方案,其中包含C#(托管)、C++/CLI(非托管)和纯C++(native)项目。我想对所有3个项目或至少围绕native代码执行内存泄漏检测:C#项目引用了非托管dll(我可以访问常用的.NET内存分析工具,因此在其上运行内存分析并不是真正的问题)。C++/CLI是围绕原生C++库的非常的薄包装器,所以我真的不需要分析它(不是那么担心)。C++native代码是最难分析的代码。我尝试过使用IntelInspectorXE2011,但它实在是太慢了……做一个简单的事情,比如仅仅初始化我的系统,花费了很长时间,我什至还没有看到它完成。当我在没

c++ - 混合 decltype 和 enable_if

似乎将decltype与SFINAEenable_if一起使用并不简单。我尝试以三种不同的方式使用enable_if编写go。所有这些都因编译器错误而失败(GCC的字面意思是:“错误:'thing'不是'foo'的成员”和实例化上下文)。#includestructfoo{enum{has_thing=false};};structbar{enum{has_thing=true};staticintthing(){return0;}};templatestructTest{/*autogo(typenamestd::enable_if::type=0)->decltype(T::thi

c++ - 如何干净地退出混合 C/C++ 的程序

我正在将C程序(main()在C中)与C++连接。在我的代码中的某些地方,我想停止执行程序。现在我想知道,我怎样才能干净地做到这一点?目前我调用了std::terminate()但更多是因为缺乏更好的想法。让我烦恼的主要事情甚至不是我没有释放内存(因为它在程序终止时无论如何都被释放了,对吧?)而是MSVS即时调试器弹出并且我收到一条丑陋的错误消息以不寻常的方式终止运行时。编辑:因为这引起了混淆:在这种情况下,从main()返回return0是不可能的。 最佳答案 如果您关心清理和调用析构函数,那么exit(EXIT_SUCCESS)

通过 Elasticsearch 和 Go 使用混合搜索进行地鼠狩猎

作者:CARLYRICHMOND,LAURENTSAINT-FÉLIX就像动物和编程语言一样,搜索也经历了不同实践的演变,很难在其中做出选择。在本系列的最后一篇博客中,CarlyRichmond和LaurentSaint-Félix将关键字搜索和向量搜索结合起来,使用Go客户端在Elasticsearch中寻找地鼠(gopher)。今天构建软件是对终生学习的承诺。正如你从本系列前面的博客中看到的那样,Carly最近开始使用Go。搜索经历了不同实践的演变。在你自己的搜索用例之间做出决定可能很困难。本系列所有代码均以第一部分中介绍的关键字和向量搜索示例为基础。请继续阅读第2部分及第二部分的代码,了

c++ - 混合 libstdc++ 版本

有2个软件团队为同一操作系统(ScientificLinux6.5)开发C++应用程序:Team_A使用操作系统提供的编译器和库(GCC4.4.7、GLIBC_2.12、GLIBCXX_3.4.13)来构建其C++98应用程序和各种共享库。Team_B使用从源代码构建的较新GCC版本(4.8.3)。它是一个本地编译器,它链接到OSlibc,并使用OS标准头文件,但有自己的stdc++版本(GLIBCXX_3.4.19)。Team_B在C++11模式下使用此编译器构建其应用程序(AppB),并随它一起部署libstdc++和libgcc_s。Team_A以共享库(.so、.hpp)的形式

c++ - 使用 FFmpeg 从音频和视频文件中混合

我正在学习如何从this中创建MP4视频示例。问题是该示例演示了动态生成的一些虚拟源数据的音频编码。我需要对文件中的音频进行编码。我检查了很多示例,其中大多数显示相同或只是单独的音频编码。在我的试错过程中,我对音频和视频帧使用相同的AVFormatContext。我不确定这样做是否正确,或者我应该有2个单独的上下文?到目前为止,我的视频编码正常,但音频流失败因为AVPacket无法找到正确的音频流索引。这是我设置音频流的方式:voidopen_audio(AVFormatContext*oc,AVCodec**codec,AVStream**st,enumAVCodecIDcodec_

c++ - 用于 gcc 或 clang 的 LTO 是否可以跨 C 和 C++ 方法进行优化

如果链接时优化(LTO)与gcc一起使用或clang,是否可以跨C和C++语言边界优化代码?例如,C函数是否可以内联到C++调用程序中? 最佳答案 是的!链接时优化通常适用于“胖”目标文件中存在的中间表示(IR),它可以包含用于传统链接的机器代码和用于LTO链接的IR。在此阶段,不再有高级语言结构,因此链接时优化与语言无关。海合会海湾合作委员会的link-timeoptimization(LTO)在GIMPLE上工作,GIMPLE是GCC的中间表示之一。IR始终与语言无关,因此任何链接时优化都适用于从任何语言生成的代码。来自GCCO

c++ - 为什么 C++ 标准指定在具有混合符号的二进制运算中将有符号整数转换为无符号?

C和C++标准规定,同阶的有符号整数和无符号整数之间的二元运算,有符号整数被强制转换为无符号整数。由此引起的SO有很多问题......我们称之为奇怪的行为:unsignedtosignedconversion,C++ImplicitConversion(Signed+Unsigned),Awarning-comparisonbetweensignedandunsignedintegerexpressions,%(mod)withmixedsignedness等但是这些都没有给出任何理由说明为什么标准采用这种方式,而不是强制转换为带符号的整数。我确实找到了一位自称为大师的人,他说这是显而

c++ - 混合 C 和汇编文件

我想使用nakedfunction在我的C++程序中使用g++。不幸的是,与VC++不同,g++不支持裸函数,管理它的唯一方法是在单独的文件中编写您自己的汇编代码并链接到您的C++文件。我试图找到一些很好的x86教程来混合汇编和C/C++文件,但找不到任何好的教程。如果你知道的话,请告诉我。请注意,我不是在询问内联汇编,而是链接C和汇编文件以及在汇编中声明C的外部变量的方法,反之亦然,除了在C或汇编中使用它们之外,还有使用Makefile链接C和asm文件的方法. 最佳答案 在C++文件中:extern"C"voidfoo();//

c++ - 虚拟继承和静态继承——C++中的混合

如果你有这样的事情:#includetemplateclassA{public:voidfunc(){T::func();}};classB:publicA{public:virtualvoidfunc(){std::coutfunc()是动态调度的吗?您如何实现类A,以便在B具有虚拟重写时动态分派(dispatch)它,但如果B没有,则静态分派(dispatch)?编辑:我的代码没有编译?对不起大家。我现在有点不舒服。我的新代码也无法编译,但这是问题的一部分。另外,这个问题是给我的,不是常见问题解答。#includetemplateclassA{public:voidfunc(){T